/************************************************************************

								Heroes IV
					  Copyright 2000, The 3DO Company

	------------------------------------------------------------------
  						       dialog_campaign_selection.h

	$Header: /game/dialog_campaign_selection.h $

	$NoKeywords: $

 ************************************************************************/
#ifndef CAMPAIGN_SELECTION_DIALOG_H_INCLUDED
#define CAMPAIGN_SELECTION_DIALOG_H_INCLUDED

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

// kill the 255+ character identifier warning.  Templates tend to exceed that easily.
#pragma warning( disable: 4786 )

#include <vector>
#include "adventure_map.h"
#include "bitmap_group_ptr.h"
#include "bitmap_layer_window.h"
#include "bitmap_layer_window_ptr.h"
#include "campaign_file_header.h"
#include "dialog_box.h"
#include "difficulty_level.h"
#include "font_cache.h"
#include "standard_campaign_id.h"
#include "text_window_ptr.h"

// ---------------------------------------------------------------------
// combat_results creatures dialog
// ---------------------------------------------------------------------
class t_campaign_selection_dialog : public t_bitmap_layer_window
{
public:
	enum { k_campaign_count = 6 };

	t_campaign_selection_dialog( t_window* parent ); 

	t_standard_campaign_id						get_campaign_id() const;
	t_difficulty								get_difficulty() const;
	t_multi_scenario_campaign_file_header_ptr	get_file_header_ptr() const;
	bool										guards_can_move() const;

protected:
	t_text_window* add_text( std::string const& text, std::string const& layer_name, 
		                     int size, bool size_explicit = false, bool center = true );
	void			cancel_clicked( t_button* button );
	void			chaos_clicked( t_button* button );
	void			create_buttons();
	void			create_icons();
	void			create_text();
	void			death_clicked( t_button* button );
	bool			do_campaign_dialog( int selection );
	void			initialize();
	void			life_clicked( t_button* button );
	void			might_clicked( t_button* button );
	void			nature_clicked( t_button* button );
	void			order_clicked( t_button* button );
		                       
	t_standard_campaign_id				m_campaign_id;
	t_difficulty						m_difficulty;
	bool								m_enabled[k_campaign_count];
	t_multi_scenario_campaign_file_header_ptr m_file_header_ptr;
	bool								m_guards_can_move;
	t_bitmap_group_ptr					m_layout;
	t_window*							m_parent; 
};

inline t_standard_campaign_id t_campaign_selection_dialog::get_campaign_id() const
{
	return m_campaign_id;
}

inline t_difficulty t_campaign_selection_dialog::get_difficulty() const
{
	return m_difficulty;
}

inline bool t_campaign_selection_dialog::guards_can_move() const
{
	return m_guards_can_move;
}

inline t_multi_scenario_campaign_file_header_ptr t_campaign_selection_dialog::get_file_header_ptr() const
{
	return m_file_header_ptr;
}

#endif // CAMPAIGN_SELECTION_DIALOG_H_INCLUDED
